namespace Digitalmes.Domain;

/// <summary>
/// 错误代码
/// </summary>
/// <remarks>
/// <para></para>
/// <para>E0000~E0099 设备交互动作代码</para>
/// <para>E1000~E1999 设备交互错误代码</para>
/// <para>E4000~E4999 系统业务错误代码</para>
/// </remarks>
public enum ErrorCode
{
    #region 设备交互动作代码

    /// <summary>
    /// 【设备信号初始状态】
    /// </summary>
    [Description("设备信号初始状态")]
    E0000 = 0,

    /// <summary>
    /// 【设备信号触发条件】
    /// </summary>
    [Description("设备信号触发条件")]
    E0001 = 1,

    /// <summary>
    /// 【回执给设备】系统异常
    /// </summary>
    [Description("系统异常")]
    E0002 = 2,

    /// <summary>
    /// 【回执给设备】接口地址未定义
    /// </summary>
    [Description("接口地址未定义")]
    E0003 = 3,

    /// <summary>
    /// 【回执给设备】MES 反馈 PLC 处理 OK。
    /// </summary>
    [Description("允许作业")]
    E0010 = 10,

    /// <summary>
    /// 【回执给设备】放行，该产品在此工位无需作业，流入后一工序。
    /// </summary>
    [Description("放行")]
    E0020 = 20,

    /// <summary>
    /// 【回执给设备】设备点检，标件在此工位做点检作业（自动点检）。
    /// </summary>
    /// <remarks>自动点检没有进/出站，会用另一块点检地址去触发。</remarks>
    [Description("设备点检")]
    E0030 = 30,

    #endregion

    #region 设备交互异常代码

    #region 上线请求

    /// <summary>
    /// 【产品上线请求】产品上线请求异常。
    /// </summary>
    [Description("产品上线请求异常")]
    E1000 = 1000,

    /// <summary>
    /// 【产品上线请求】PLC 上线请求数据不完整，SN 为空。
    /// </summary>
    [Description("PLC 上线请求数据不完整，SN 为空")]
    E1001 = 1001,

    /// <summary>
    /// 【产品上线请求】PLC 上线请求数据不完整，配方号为空。
    /// </summary>
    [Description("PLC 上线请求数据不完整，配方号为空")]
    E1002 = 1002,

    /// <summary>
    /// 【产品上线请求】产品上线请求异常，产品重复上线。
    /// </summary>
    [Description("产品上线请求异常，产品重复上线")]
    E1003 = 1003,

    #endregion

    #region 进站

    /// <summary>
    /// 【进站】进站请求异常。
    /// </summary>
    [Description("进站请求异常")]
    E1100 = 1100,

    /// <summary>
    /// 【进站】PLC 进站请求数据不完整，SN 为空。
    /// </summary>
    [Description("PLC 进站请求数据不完整，SN 为空")]
    E1101 = 1101,

    /// <summary>
    /// 【进站】进站请求异常，没有找到产品编号。
    /// </summary>
    [Description("进站请求异常，没有找到产品编号")]
    E1102 = 1102,

    /// <summary>
    /// 【进站】进站请求异常，没有找到指定的工序信息。
    /// </summary>
    [Description("进站请求异常，没有找到指定的工序信息")]
    E1103 = 1103,

    /// <summary>
    /// 【进站】进站请求异常，没有找到指定的产品。
    /// </summary>
    [Description("进站请求异常，没有找到指定的产品")]
    E1104 = 1104,

    /// <summary>
    /// 【进站】进站请求异常，没有可执行的工单。
    /// </summary>
    [Description("进站请求异常，没有可执行的工单")]
    E1105 = 1105,

    /// <summary>
    /// 【进站】进站请求异常，产品条码规则不匹配。
    /// </summary>
    [Description("进站请求异常，产品条码规则不匹配")]
    E1106 = 1106,

    /// <summary>
    /// 【进站】进站请求异常，通过配方号没有找到对应的工艺路线。
    /// </summary>
    [Description("进站请求异常，通过配方号没有找到对应的工艺路线")]
    E1107 = 1107,

    /// <summary>
    /// 【进站】进站请求异常，产品首次必须从首站上线。
    /// </summary>
    [Description("进站请求异常，产品首次必须从首站上线")]
    E1108 = 1108,

    /// <summary>
    /// 【进站】进站请求异常，当前工位没有找到对应的工序信息。
    /// </summary>
    [Description("进站请求异常，当前工位没有找到对应的工序信息")]
    E1109 = 1109,

    /// <summary>
    /// 【进站】进站请求异常，产品已报废，不能再进站生产。
    /// </summary>
    [Description("进站请求异常，产品已报废，不能再进站生产")]
    E1110 = 1110,

    /// <summary>
    /// 【进站】进站请求异常，产品已完工下线，不能再进站生产。
    /// </summary>
    [Description("进站请求异常，产品已完工下线，不能再进站生产")]
    E1111 = 1111,

    /// <summary>
    /// 【进站】进站请求异常，当前工序重复进站。
    /// </summary>
    [Description("进站请求异常，当前工序重复进站")]
    E1112 = 1112,

    /// <summary>
    /// 【进站】进站请求异常，存在跳序作业。
    /// </summary>
    [Description("进站请求异常，存在跳序作业")]
    E1113 = 1113,

    /// <summary>
    /// 【进站】进站请求异常，上一关键工序过站 NG。
    /// </summary>
    [Description("进站请求异常，上一关键工序过站 NG")]
    E1114 = 1114,

    #endregion

    #region 出站

    /// <summary>
    /// 【出站】产品出站异常。
    /// </summary>
    [Description("出站请求异常")]
    E1200 = 1200,

    /// <summary>
    /// 【出站】PLC 出站请求数据不完整，SN 为空。
    /// </summary>
    [Description("PLC 出站请求数据不完整，SN 为空")]
    E1201 = 1201,

    /// <summary>
    /// 【出站】PLC 出站请求数据不完整，过站结果没有设定或设定不正确。
    /// </summary>
    [Description("PLC 出站请求数据不完整，过站结果没有设定或设定不正确")]
    E1202 = 1202,

    /// <summary>
    /// 【出站】产品出站异常，没有找到指定的工位信息。
    /// </summary>
    [Description("产品出站异常，没有找到指定的工位信息")]
    E1203 = 1203,

    /// <summary>
    /// 【出站】产品出站异常，产品不在当前工位。
    /// </summary>
    [Description("产品出站异常，产品不在当前工位")]
    E1204 = 1204,

    /// <summary>
    /// 【出站】产品出站异常，产品在当前工位已处于出站状态，不能再次出站。
    /// </summary>
    [Description("产品出站异常，产品在当前工位已处于出站状态，不能再次出站")]
    E1205 = 1205,

    /// <summary>
    /// 【出站】产品出站异常，产品在当前工位没有进站请求。
    /// </summary>
    [Description("产品出站异常，产品在当前工位没有进站请求")]
    E1206 = 1206,

    /// <summary>
    /// 【出站】产品出站异常，已上的关键物料与物料清单不匹配，存在关键物料未扫码。
    /// </summary>
    [Description("产品出站异常，已上的关键物料与物料清单不匹配，存在关键物料未扫码")]
    E1207 = 1207,

    #endregion

    #region 工步作业状态

    /// <summary>
    /// 【工步过点】工步过点异常。
    /// </summary>
    [Description("工步过点异常")]
    E1300 = 1300,

    /// <summary>
    /// 【工步过点】PLC 工步过点请求数据不完整，SN 为空。
    /// </summary>
    [Description("PLC 工步过点请求数据不完整，SN 为空")]
    E1301 = 1301,

    /// <summary>
    /// 【工步过点】PLC 工步过点数据异常，过点结果设定不正确。
    /// </summary>
    [Description("PLC 工步过点数据异常，过点结果设定不正确")]
    E1302 = 1302,

    /// <summary>
    /// 【工步过点】工步过点异常，没有找到指定的工序信息。
    /// </summary>
    [Description("工步过点异常，没有找到指定的工序信息")]
    E1303 = 1303,

    /// <summary>
    /// 【工步过点】工步过点异常，产品不在当前工位。
    /// </summary>
    [Description("工步过点异常，产品不在当前工位")]
    E1304 = 1304,

    /// <summary>
    /// 【工步过点】工步过点异常，产品在当前工位处于出站状态。
    /// </summary>
    [Description("工步过点异常，产品在当前工位处于出站状态")]
    E1305 = 1305,

    /// <summary>
    /// 【工步过点】工步过点异常，没有找到进站信息。
    /// </summary>
    [Description("工步过点异常，没有找到进站信息")]
    E1306 = 1306,

    /// <summary>
    /// 【工步过点】工步过点异常，没有找到对应工步信息。
    /// </summary>
    [Description("工步过点异常，没有找到对应工步信息")]
    E1307 = 1307,

    /// <summary>
    /// 【工步过点】工步过点异常，对比参数标准不合格。
    /// </summary>
    [Description("工步过点异常，对比参数标准不合格")]
    E1308 = 1308, 

    #endregion

    #region 关键物料扫码上料

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料异常。
    /// </summary>
    [Description("关键物料扫码上料请求异常")]
    E1400 = 1400,

    /// <summary>
    /// 【关键物料扫码上料】PLC 关键物料扫码请求数据不完整，SN 为空。
    /// </summary>
    [Description("PLC 关键物料扫码请求数据不完整，SN 为空")]
    E1401 = 1401,

    /// <summary>
    /// 【关键物料扫码上料】PLC 关键物料扫码请求数据不完整，物料条码为空。
    /// </summary>
    [Description("PLC 关键物料扫码请求数据不完整，物料条码为空")]
    E1402 = 1402,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，没有找到指定的工序信息。
    /// </summary>
    [Description("关键物料扫码上料请求异常，没有找到指定的工序信息")]
    E1403 = 1403,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，产品不在当前工序。
    /// </summary>
    [Description("关键物料扫码上料请求异常，产品不在当前工序")]
    E1404 = 1404,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，产品目前在该工序不处于进站状态，不能上料。
    /// </summary>
    [Description("关键物料扫码上料请求异常，产品目前在该工序不处于进站状态，不能上料")]
    E1405 = 1405,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，工艺步骤没有设定工艺物料。
    /// </summary>
    [Description("关键物料扫码上料请求异常，工艺步骤没有设定工艺物料")]
    E1406 = 1406,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，扫码物料没有在工艺物料中设定。
    /// </summary>
    [Description("关键物料扫码上料请求异常，扫码物料没有在工艺物料中设定")]
    E1407 = 1407,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，物料条码规则不匹配。
    /// </summary>
    [Description("关键物料扫码上料请求异常，物料条码规则不匹配")]
    E1408 = 1408,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，物料已被其他地方使用。
    /// </summary>
    [Description("关键物料扫码上料请求异常，物料已被其他地方使用")]
    E1409 = 1409,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，产品在当前工位重复扫码。
    /// </summary>
    [Description("关键物料扫码上料请求异常，物料在当前工位重复扫码")]
    E1410 = 1410,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，同种物料已全部扫码上料。
    /// </summary>
    [Description("关键物料扫码上料请求异常，同种物料已全部扫码上料")]
    E1411 = 1411,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，关键物料没有找到作为产品的完工信息。
    /// </summary>
    [Description("关键物料扫码上料请求异常，关键物料没有找到作为产品的完工信息")]
    E1412 = 1412,

    /// <summary>
    /// 【关键物料扫码上料】关键物料扫码上料请求异常，关键物料作为产品没有良品完工。
    /// </summary>
    [Description("关键物料扫码上料请求异常，关键物料作为产品没有良品完工")]
    E1413 = 1413,

    #endregion

    #region 批次料扫码上料

    /// <summary>
    /// 【批次物料扫码上料】批次物料扫码上料请求异常。
    /// </summary>
    [Description("批次物料扫码上料请求异常")]
    E1500 = 1500,

    /// <summary>
    /// 【批次物料扫码上料】PLC 批次物料扫码请求数据不完整，物料条码为空。
    /// </summary>
    [Description("PLC 批次物料扫码请求数据不完整，物料条码为空")]
    E1501 = 1501,

    /// <summary>
    /// 【批次物料扫码上料】批次物料扫码上料请求异常，没有找到指定的工位信息。
    /// </summary>
    [Description("批次物料扫码上料请求异常，没有找到指定的工位信息")]
    E1502 = 1502,

    /// <summary>
    /// 【批次物料扫码上料】批次物料扫码上料请求异常，没有找到批次料对应的信息。
    /// </summary>
    [Description("批次物料扫码上料请求异常，没有找到批次料对应的信息")]
    E1503 = 1503,

    #endregion

    #region 返工再上线

    /// <summary>
    /// 【返工再上线】返工再上线请求异常。
    /// </summary>
    [Description("返工再上线请求异常")]
    E1600 = 1600,

    /// <summary>
    /// 【返工再上线】PLC 返工再上线请求数据不完整，SN 为空。
    /// </summary>
    [Description("PLC 返工再上线请求数据不完整，SN 为空")]
    E1601 = 1601,

    /// <summary>
    /// 【返工再上线】返工再上线请求异常，没有找到指定的工位信息。
    /// </summary>
    [Description("返工再上线请求异常，没有找到指定的工位信息")]
    E1602 = 1602,

    /// <summary>
    /// 【返工再上线】返工再上线请求异常，返修件不存在。
    /// </summary>
    [Description("返工再上线请求异常，返修件不存在")]
    E1603 = 1603,

    /// <summary>
    /// 【返工再上线】返工再上线请求异常，产品不处于待重上线状态。
    /// </summary>
    [Description("返工再上线请求异常，产品不处于待重上线状态")]
    E1604 = 1604,

    /// <summary>
    /// 【返工再上线】返工再上线请求异常，产品还没有开返工单。
    /// </summary>
    [Description("返工再上线请求异常，产品还没有开返工单")]
    E1605 = 1605,

    /// <summary>
    /// 【返工再上线】返工再上线请求异常，产品还未完成返工作业。
    /// </summary>
    [Description("返工再上线请求异常，产品还未完成返工作业")]
    E1606 = 1606,

    #endregion

    #region 设备点检

    /// <summary>
    /// 【设备点检】设备点检异常。
    /// </summary>
    [Description("设备点检异常")]
    E1700 = 1700,

    /// <summary>
    /// 【设备点检】PLC 设备点检数据异常，点检结果设定不正确。
    /// </summary>
    [Description("PLC 设备点检数据异常，点检结果设定不正确")]
    E1701 = 1701,

    /// <summary>
    /// 【设备点检】PLC 设备点检数据异常，没有找到指定的工位信息。
    /// </summary>
    [Description("PLC 设备点检数据异常，没有找到指定的工位信息")]
    E1702 = 1702,

    /// <summary>
    /// 【设备点检】PLC 设备点检数据异常，没有找到指定的点检设备。
    /// </summary>
    [Description("PLC 设备点检数据异常，没有找到指定的点检设备")]
    E1703 = 1703,

    /// <summary>
    /// 【设备点检】PLC 设备点检数据异常，没有找到指定的点检计划。
    /// </summary>
    [Description("PLC 设备点检数据异常，没有找到指定的点检计划")]
    E1704 = 1704,

    /// <summary>
    /// 【设备点检】PLC 设备点检数据异常，对比参数标准不合格。
    /// </summary>
    [Description("PLC 设备点检数据异常，对比参数标准不合格")]
    E1705 = 1705,

    #endregion

    #endregion

    #region 业务异常代码

    [Description("业务异常")]
    E4000 = 4000,

    /// <summary>
    /// 数据已存在
    /// </summary>
    [Description("数据已存在")]
    E4001 = 4001,

    /// <summary>
    /// 编号已存在
    /// </summary>
    [Description("编号已存在")]
    E4002 = 4002,

    /// <summary>
    /// 名称已存在
    /// </summary>
    [Description("名称已存在")]
    E4003 = 4003,

    /// <summary>
    /// 数据没找到
    /// </summary>
    [Description("数据没找到")]
    E4004 = 4004,

    /// <summary>
    /// 数据不唯一
    /// </summary>
    [Description("数据不唯一")]
    E4005 = 4005,

    /// <summary>
    /// 序号已存在
    /// </summary>
    [Description("序号已存在")]
    E4006 = 4006,

    /// <summary>
    /// 工序不唯一
    /// </summary>
    [Description("工序不唯一")]
    E4007 = 4007,

    /// <summary>
    /// 产品已和同一产线内其他工艺路线关联
    /// </summary>
    [Description("产品已和同一产线内其他工艺路线关联")]
    E4008 = 4008,

    /// <summary>
    /// 没有找到点检模板
    /// </summary>
    [Description("没有找到点检模板")]
    E4009 = 4009,

    /// <summary>
    /// 工单不能修改
    /// </summary>
    [Description("工单不能修改")]
    E4011 = 4011,

    #endregion

    #region 系统代码

    [Description("系统异常")]
    E4400 = 4400,

    /// <summary>
    /// 认证已过期，需要重新登录
    /// </summary>
    [Description("认证已过期，需要重新登录")]
    E4401 = 4401,

    /// <summary>
    /// 接口未实现
    /// </summary>
    [Description("接口未实现")]
    E4404 = 4404,

    #endregion
}
